home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Varios Español
/
Varios Español.iso
/
DBASE5
/
CUA_SAMP.ZIP
/
GESTION.PRG
< prev
next >
Wrap
Text File
|
1994-10-12
|
22KB
|
693 lines
******************************************************************************
* PROGRAM NAME: BUSINESS.PRG
*
* SAMPLE CUA BUSINESS APPLICATION SYSTEM
* LAST CHANGED: 06/20/94 08:00AM
* WRITTEN BY: Borland International Inc.
*
******************************************************************************
PROCEDURE GESTION
_cmdWindow.visible = .F. && Get rid of command window
SET TALK OFF
CLEAR ALL && Close open files and clear memvars
SET STATUS OFF
SET LIBRARY TO (HOME() + "FORMRUN.DBO")
DEFINE FORM dB5___XXX PROPERTY VISIBLE .F. && create an object
lVoid = dB5___XXX.Open() && reference variable
_CmdWindow.oDesk = dB5___XXX.Parent && to point to _Desktop
lVoid = dB5___XXX.Close() && and store it in
lVoid = dB5___XXX.Release() && _CmdWindow
RELEASE dB5___XXX
*
* Define the Menu Object as the Top most object and Open
*
DEFINE MENUBAR Main
DEFINE MENU F1 OF Main ;
PROPERTY ;
Text "&Fichero"
*
* Define Menu Items under the FILE Option
*
DEFINE MENUITEM Open OF Main.F1 ;
PROPERTY ;
Text "&Abrir",;
StatusMessage "Browse de la base de datos (SOLO LECTURA)",;
OnClick OpenFile
DEFINE MENUITEM CloseAll OF Main.F1 ;
PROPERTY ;
Text "&Cerrar todos" ,;
StatusMessage "Cerrar todas las bases de datos abiertas",;
OnClick CloseAll
DEFINE MENUITEM Sep1 OF Main.F1 ;
PROPERTY ;
Separator .T.
DEFINE MENUITEM Bac OF Main.F1 ;
PROPERTY ;
Text "Copiar/&Recuperar",;
OnClick "Copiaseg" ,;
ProcFile "Copiaseg.prg"
DEFINE MENUITEM Sep2 OF Main.F1 ;
PROPERTY ;
Separator .T.
DEFINE MENUITEM Edbase OF Main.F1 ;
PROPERTY ;
Text "&Salir a dBASE",;
SHORTCUT "ALT-F4",;
StatusMessage "Salir a la ventana de mandatos de dBASE",;
OnClick cl_bus
DEFINE MENUITEM Exit OF Main.F1 ;
PROPERTY ;
Text "Salir al &DOS",;
StatusMessage "Salir de Gestión y volver al DOS",;
OnClick Leave
*
* Define the second CUA Option EDIT
*
DEFINE MENU E OF Main ;
PROPERTY ;
Text "&Edición"
*
* Define Menu Items under the EDIT Option
*
DEFINE MENUITEM Undo OF Main.E ;
PROPERTY ;
TEXT "&Deshacer",;
Enabled .F.,;
SHORTCUT "ALT-BACKSPACE",;
StatusMessage "Cancelar la última modificación del registro",;
OnClick UndoIt
DEFINE MENUITEM Save OF Main.E ;
PROPERTY ;
TEXT "&Almacenar",;
Enabled .F.,;
StatusMessage "Almacenar las modificaciones del registro actual",;
OnClick SubmitIt
DEFINE MENUITEM Sep1 OF Main.E ;
PROPERTY ;
Separator .T.
DEFINE MENUITEM Copy Of Main.E ;
PROPERTY ;
Text "&Copiar",;
SHORTCUT "CTRL-INS",;
StatusMessage "Opción no implementada",;
OnClick Devnote
DEFINE MENUITEM Paste OF Main.E ;
PROPERTY ;
Text "&Pegar",;
SHORTCUT "SHIFT-INS",;
StatusMessage "Opción no implementada",;
OnClick Devnote
*
* Define the fourth CUA item Table
*
DEFINE MENU S OF Main ;
PROPERTY ;
Text "&Tabla",;
OnClick "CheckOpen"
DEFINE MENUITEM Srch OF Main.S;
PROPERTY ;
Text "&Buscar",;
Enabled .F. ,;
StatusMessage "Buscar registros (basado en la ficha actualmente abierta)",;
OnClick "Srchr"
DEFINE MENUITEM Sep1 OF Main.S ;
PROPERTY ;
Separator .T.
DEFINE MENUITEM tp OF Main.S ;
PROPERTY ;
Text "&Principio",;
Enabled .F. ,;
StatusMessage "Ir al primer registro de la tabla",;
OnClick "GoTop"
DEFINE MENUITEM btm OF Main.S ;
PROPERTY ;
Text "&Final",;
Enabled .F. ,;
StatusMessage "Ir al último registro de la tabla",;
OnClick "GoBott"
DEFINE MENUITEM Sep2 OF Main.S ;
PROPERTY ;
Separator .T.
DEFINE MENUITEM pck OF Main.S ;
PROPERTY ;
Text "&Eliminar borrados",;
StatusMessage "Eliminar todos los registros marcados para borrado en todas las tablas",;
OnClick "PackTabl"
DEFINE MENUITEM Indx OF Main.S ;
PROPERTY ;
TEXT "&Reindexar",;
StatusMessage "Reindexar todas las tablas",;
OnClick "inddbf"
*
* Define the fifth CUA item Application
*
DEFINE MENU App OF Main PROPERTY Text "&Aplicación"
DEFINE MENUITEM cust OF Main.App ;
PROPERTY ;
Text "&Clientes",;
OnClick Cust,;
ProcFile "CLI.prg"
DEFINE MENUITEM Ord OF Main.App ;
PROPERTY ;
Text "&Pedidos",;
OnClick Orders,;
ProcFile "PEDIDOS.prg"
DEFINE MENUITEM Sep1 OF Main.App ;
PROPERTY ;
Separator .T.
DEFINE MENUITEM Vend OF Main.App ;
PROPERTY ;
Text "P&roveedores",;
OnClick Vendors,;
ProcFile "PROVEEDS.prg"
DEFINE MENUITEM Gds OF Main.App ;
PROPERTY ;
Text "&Artículos",;
OnClick Goods,;
ProcFile "ARTICULO.prg"
DEFINE MENUITEM Sep2 OF Main.App ;
PROPERTY ;
Separator .T.
DEFINE MENUITEM Acc OF Main.App ;
PROPERTY ;
Text "&Movimiento de cuentas",;
OnClick "Acct_rec" ,;
Procfile "MOV_CTAS.prg"
DEFINE MENUITEM Inv OF Main.App ;
PROPERTY ;
Text "&Imprimir facturas",;
Onclick "Facturas",;
ProcFile "Facturas.prg"
DEFINE MENUITEM Sep3 OF Main.App ;
PROPERTY ;
Separator .T.
DEFINE MENUITEM emp OF Main.App ;
PROPERTY ;
Text "&Empleados",;
OnClick Employee,;
ProcFile "EMPLEADO.prg"
DEFINE MENUITEM Are OF Main.App;
PROPERTY ;
Text "Pre&fijos",;
OnClick "AreaCode",;
ProcFile "PREFIJOS.prg"
*
* Define the sixth CUA item HELP
*
DEFINE MENU H OF Main ;
PROPERTY ;
Text "A&yuda"
DEFINE MENUITEM keyb OF Main.H ;
PROPERTY ;
Text "&Teclado",;
OnClick DevNote1
DEFINE MENUITEM Indx OF Main.H ;
PROPERTY ;
Text "&Indice",;
OnClick DevNote1
DEFINE MENUITEM Abt OF Main.H ;
PROPERTY ;
Text "&Acerca de",;
OnClick "About"
* Define the FORM for HELP|ABOUT
DEFINE FORM Abt_box FROM 1,3 TO 18,73 ;
PROPERTY ;
Text "Acerca de la aplicación Gestión",;
Sizeable .F.
* Define the text to go in the form for HELP|ABOUT
DEFINE TEXT T1_abt OF Abt_box AT 1,2 ;
PROPERTY ;
TEXT "Esta versión de GESTION está escrita específicamente para dBASE"
DEFINE TEXT T2_abt OF Abt_box AT 2,2 ;
PROPERTY ;
TEXT "DOS versión 5.0, conocida originalmente como A-T INDUSTRIAS DEL"
DEFINE TEXT T3_abt OF Abt_box AT 3,2 ;
PROPERTY ;
TEXT "MUEBLE. Se ha creado esta nueva versión para demostrar el nuevo"
DEFINE TEXT T4_abt OF Abt_box AT 4,2 ;
PROPERTY ;
TEXT "modelo de control de sucesos y de objetos de dBASE 5.0 para DOS."
DEFINE TEXT T5_abt OF Abt_box AT 6,2 ;
PROPERTY ;
TEXT "El módulo principal es GESTION.PRG que llama a cada subrutina "
DEFINE TEXT T6_abt OF Abt_box AT 7,2 ;
PROPERTY ;
TEXT "después de cada tabla (ej. EMPLEADO, PROVEEDS, etc). Cada "
DEFINE TEXT T7_abt OF Abt_box AT 8,2 ;
PROPERTY ;
TEXT "subrutina tiene un .DFM (código fuente de ficha) asociado."
DEFINE TEXT T8_abt OF Abt_box AT 10,2 ;
PROPERTY ;
TEXT "El estudio del código fuente (en <u>:\<dirdbase>\CUA_EJEM), "
DEFINE TEXT T9_abt OF Abt_box AT 11,2 ;
PROPERTY ;
TEXT "junto con la documentación del producto, le ayudará a conocer"
DEFINE TEXT T10_abt OF Abt_box AT 12,2 ;
PROPERTY ;
TEXT "las nuevas y potentes características del lenguaje dBASE.",;
LABEL .F.
* Define the PushButton for closing the form Abt_box
DEFINE PUSH okab OF Abt_box AT 14,28 ;
PROPERTY ;
TEXT "Aceptar",;
WIDTH 11,;
DEFAULT .T.,;
OnClick CloseAbt
CLEAR
*
* Open the Menu Object as the top most object
*
lVoid = Main.open()
DO About
RETURN
****************************
PROCEDURE Inddbf && Indexing tables
IF LEN(DBF()) > 0 && There is a table open
DO ErrorMsg WITH "Para ejecutar este procedimiento deberá salir de todas las fichas .."
ELSE
DO Gauge
Status.Gauge.WIDTH = 5
Status.T3.Text = "Empleados ..."
USE EMPLEADO EXCL
REINDEX
Status.Gauge.WIDTH = 10
Status.T3.Text = "Proveedores ... "
USE PROVEEDS EXCL
REINDEX
Status.Gauge.WIDTH = 15
Status.T3.Text = "Artículos ... "
USE ARTICULO EXCL
REINDEX
Status.Gauge.WIDTH = 20
Status.T3.Text = "Clientes ..."
USE CLI EXCL
REINDEX
Status.Gauge.WIDTH = 25
Status.T3.Text = "Pedidos ... "
USE PEDIDOS EXCL
REINDEX
Status.Gauge.WIDTH = 30
Status.T3.Text = "Movimiento de cuentas ..."
USE MOV_CTAS EXCL
REINDEX
Status.Gauge.WIDTH = 35
Status.T3.Text = "Prefijos..."
USE PREFIJOS EXCL
REINDEX
USE
CLEA
lVoid = Status.Release()
ENDIF
RETURN
****************************
PROCEDURE PackTabl && Packing Tables
CLOSE ALL
DO Gauge
* Check to see if there are any tables open
IF LEN(DBF()) > 0
DO ErrorMsg WITH "Para ejecutar este procedimiento deberá salir de todas las fichas .."
ELSE
Status.Gauge.WIDTH = 5
Status.T3.Text = "Empleados ..."
USE EMPLEADO EXCL
PACK
Status.Gauge.WIDTH = 10
Status.T3.Text = "Proveedores ... "
USE PROVEEDS EXCL
PACK
Status.Gauge.WIDTH = 15
Status.T3.Text = "Artículos ... "
USE ARTICULO EXCL
PACK
Status.Gauge.WIDTH = 20
Status.T3.Text = "Clientes ..."
USE CLI EXCL
PACK
Status.Gauge.WIDTH = 25
Status.T3.Text = "Pedidos ... "
USE PEDIDOS EXCL
PACK
Status.Gauge.WIDTH = 30
Status.T3.Text = "Movimiento de cuentas ..."
USE MOV_CTAS EXCL
PACK
USE
Status.Gauge.Width = 35
Status.T3.Text = "Prefijos ..."
USE PREFIJOS EXCL
PACK
USE
CLEA
lVoid = Status.Release()
ENDIF
RETURN
****************************
PROCEDURE Gauge
DEFINE FORM Status FROM 5,25 TO 10,65 ;
PROPERTY ;
Text "Estado" ,;
COLORNORMAL "W/B"
DEFINE TEXT t1 OF Status AT 0,1 ;
PROPERTY ;
TEXT "0%",;
COLORNORMAL "B/W"
DEFINE TEXT t2 OF Status AT 0,34 ;
PROPERTY ;
Text "100%",;
COLORNORMAL "B/W"
DEFINE TEXT t3 OF Status AT 3,1 ;
PROPERTY ;
Text "",;
COLORNORMAL "B/W"
DEFINE RECTANGLE Gauge OF Status AT 4,1 ;
PROPERTY ;
TOP 1,;
LEFT 1,;
HEIGHT 2,;
Width 1,;
COLORNORMAL "R/W"
lVoid = Status.Open()
RETURN
****************************
PROCEDURE GOTOP && Going to top record in table
* Need to see if a form is on the desktop
* Use the _Clipboard reference (its always alive)
CurrObj = _ClipBoard.Parent.ActiveControl()
* Check to see if there is a form on the desktop
IF TYPE("CurrObj") = "L"
DO ErrorMsg WITH "Para ir al principio debe estar abierta una ficha ..."
ELSE
IF CurrObj.ClassName = "FORM"
lVoid = CurrObj.Submit() && Check if Form before Submit()
ENDIF
GO TOP
IF CurrObj.ClassName = "FORM" && Check if Form before Refresh()
lVoid = CurrObj.Refresh()
ENDIF
ENDIF
RETURN
****************************
PROCEDURE GOBOTT && Going to Bottom Record in table
* Need to see if a form is on the desktop
* Use the _Clipboard reference (its always alive)
CurrObj = _ClipBoard.Parent.ActiveControl()
* Check to see if there is a Form on the desktop
IF TYPE("CurrObj") = "L"
DO ErrorMsg WITH "Para ir al final debe estar abierta una ficha ..."
ELSE
IF CurrObj.ClassName = "FORM" && Check if Form before Submit()
lVoid = CurrObj.Submit()
ENDIF
GO BOTTOM
IF CurrObj.ClassName = "FORM" && Check if Form before Refresh()
lVoid = CurrObj.Refresh()
ENDIF
IF CurrObj.ClassName = "BROWSE" && If Browse, RefreshRecord()
lVoid = CurrObj.RefreshRecord()
ENDIF
ENDIF
RETURN
****************************
PROCEDURE SubmitIt && Writing Record info to dis
* Need to see if a form is on the desktop
* Use the _Clipboard reference (its always alive)
CurrObj = _ClipBoard.Parent.ActiveControl()
* check to see if a form is active
IF TYPE("CurrObj.ClassName") = "C"
IF CurrObj.ClassName = "FORM"
lVoid = CurrObj.Submit()
ELSE
DO ErrorMsg WITH "Para almacenar debe estar abierta una ficha ..."
ENDIF
ELSE
DO ErrorMsg WITH "Para almacenar debe estar abierta una ficha ..."
ENDIF
RETURN
***************************
PROCEDURE UndoIt
* Need to see if a form is on the desktop
* Use the _Clipboard reference (its always alive)
CurrObj = _ClipBoard.Parent.ActiveControl()
* check to see if a form is active, if no form on the desktop
* the type of Currobj is logical .F.
IF TYPE("CurrObj") = "L"
DO ErrorMsg WITH "Para deshacer debe estar abierta una ficha ..."
ELSE
lVoid = CurrObj.Refresh()
ENDIF
RETURN
***************************
PROCEDURE AddBrowse
IF LEN(DBF()) > 0
DEFINE BROWSE brwse ;
PROPERTY ;
APPEND .F.,;
MODIFY .F.,;
MOVEABLE .T.,;
SIZEABLE .T.,;
OnClose MnuEnable
lVoid = brwse.Open()
ELSE
DO ErrorMsg WITH "Es necesario tener activa una ficha o una tabla..."
ENDIF
****************************
PROCEDURE AddForm
IF LEN(DBF()) > 0
STORE SUBSTR(DBF(),3) TO Fname
DO CASE
CASE SUBSTR(DBF(),3)="EMPLEADO.DBF"
DO EMPLOYEE
CASE SUBSTR(DBF(),3)="PROVEEDS.DBF"
DO VENDORS
CASE SUBSTR(DBF(),3)="ARTICULO.DBF"
DO GOODS
CASE SUBSTR(DBF(),3)="CLI.DBF"
DO CUST
CASE SUBSTR(DBF(),3)="MOV_CTAS.DBF"
DO ACCT_REC
CASE SUBSTR(DBF(),3)="PREFIJOS.DBF"
DO AREACODE
OTHERWISE
DO ErrorMsg WITH "No existe ficha para "+Fname
ENDCASE
ENDIF
RETURN
****************************
PROCEDURE Srchr
PRIVATE lVoid
DO MDIDXKEY
lVoid = _CmdWindow.oBForm.Refresh()
RETURN
******************************
PROCEDURE LEAVE
CLOSE ALL
RELEASE ALL
QUIT
RETURN
******************************
PROCEDURE Cl_Bus
PRIVATE oRef, oRefP, lVoid
* close any open forms
_CmdWindow.Visible = .T.
oRef = _CmdWindow.Before
oRefP = _CmdWindow
DO WHILE oRef # _CmdWindow
IF oRef.ClassName = "FORM"
lVoid = oRef.Close()
IF TYPE("oRef.ClassName") = "C"
lVoid = oRef.Release()
ENDIF
oRef = oRefP.Before
ELSE
oRefP = oRef
oRef = oRefP.Before
ENDIF
ENDDO
IF TYPE("Main.ClassName") = "C"
lVoid = Main.Close()
lVoid = Main.Release()
ENDIF
CLEAR ALL
SET STATUS ON
RETURN
******************************
PROCEDURE Devnote
DO NoteMsg WITH "Añada aquí el código necesario para implementar las " ;
+ "opciones de menú EDICION|COPIAR y EDICION|PEGAR."
RETURN
*******************************
PROCEDURE Devnote1
DO NoteMsg WITH "Añada aquí el código necesario para implementar las " ;
+ "opciones de menú AYUDA|TECLADO y AYUDA|INDICE."
RETURN
*******************************
PROCEDURE About
Lvoid=Abt_box.readmodal()
RETURN
*******************************
PROCEDURE CloseAbt
Lvoid=Abt_box.CLOSE()
RETURN
*******************************
PROCEDURE CloseAll
PRIVATE oRef, oRefP, lVoid
* close any open forms
oRef = _CmdWindow.Before
oRefP = _CmdWindow
DO WHILE oRef # _CmdWindow
IF oRef.ClassName = "FORM"
lVoid = oRef.Close()
IF TYPE("oRef.ClassName") = "C"
lVoid = oRef.Release()
ENDIF
oRef = oRefP.Before
ELSE
oRefP = oRef
oRef = oRefP.Before
ENDIF
ENDDO
CLOSE ALL
RETURN
*******************************
PROCEDURE OpenFile
DEFINE FORM OpenFile;
PROPERTY;
AUTOSIZE .F.,;
HEIGHT 15,;
LEFT 8,;
MDI .T.,;
MOVEABLE .T.,;
SIZEABLE .F.,;
SYSMENU .T.,;
TEXT "Abrir fichero",;
TOP 1,;
WIDTH 45
DEFINE TEXT T1 OF OpenFile AT 2,2 ;
PROPERTY ;
TEXT "Lista de tablas :", ;
COLORNORMAL "R/W"
DEFINE LISTBOX DbfList OF OpenFile;
PROPERTY;
HEIGHT 7,;
LEFT 2,;
TOP 4,;
DataSource "FILEMASK *.dbf",;
WIDTH 20
DEFINE CHECKBOX Excl OF OpenFile AT 10,25 ;
PROPERTY ;
Text "&Exclusivo" ,;
COLORNORMAL "N/W" ,;
WIDTH 15
DEFINE PUSHBUTTON pbName11 OF OpenFile;
PROPERTY;
HEIGHT 2,;
LEFT 25,;
TEXT [Aceptar],;
TOP 4,;
WIDTH 11, ;
OnClick OpenIt, ;
Default .T.
DEFINE PUSHBUTTON pbName12 OF OpenFile;
PROPERTY;
HEIGHT 2,;
LEFT 25,;
TEXT [Cancelar],;
TOP 7,;
WIDTH 12, ;
OnClick CanHand
OpenFile.pbName12.PROCFILE = "CanHand.prg"
lVoid = OpenFile.Open()
******************************
PROCEDURE OpenIt
FileName = OpenFile.DbfList.Value
IF OpenFile.Excl.Value
IF FileName="PREFIJOS.DBF"
USE PREFIJOS ORDER CIUDAD ALIAS PREFIJOS EXCL
ELSE
USE &FileName EXCL
ENDIF
ELSE
IF Filename="PREFIJOS.DBF"
USE PREFIJOS ORDER CIUDAD ALIAS PREFIJOS AGAIN
ELSE
USE &FileName
ENDIF
ENDIF
lVoid = OpenFile.Release()
DO AddBrowse
Main.F1.Open.Enabled=.F.
Main.S.Tp.Enabled=.T.
Main.S.Btm.Enabled=.T.
Main.E.Undo.Enabled=.F.
Main.E.Save.Enabled=.F.
Main.App.Cust.Enabled=.F.
Main.App.Inv.Enabled=.F.
Main.App.Are.Enabled=.F.
Main.App.Emp.Enabled=.F.
Main.App.Gds.Enabled=.F.
Main.App.Ord.Enabled=.F.
Main.App.Vend.Enabled=.F.
Main.App.Acc.Enabled=.F.
RETURN
*******************************
PROCEDURE MnuEnable
CLOSE DATABASES
IF TYPE("Main.ClassName") = "C"
Main.S.Srch.Enabled=.F.
Main.S.Tp.Enabled=.F.
Main.S.Btm.Enabled=.F.
Main.E.Undo.Enabled=.F.
Main.E.Save.Enabled=.F.
Main.App.Cust.Enabled=.T.
Main.App.Inv.Enabled=.T.
Main.App.Are.Enabled=.T.
Main.App.Emp.Enabled=.T.
Main.App.Gds.Enabled=.T.
Main.App.Ord.Enabled=.T.
Main.App.Vend.Enabled=.T.
Main.App.Acc.Enabled=.T.
Main.F1.Open.Enabled=.T.
Main.S.Pck.Enabled=.T.
Main.S.Indx.Enabled=.T.
ENDIF
lVoid=Brwse.Release()
RETURN
*******************************
PROCEDURE CheckOpen
IF ChkOpen()
Main.S.pck.Enabled = .F.
Main.S.Indx.Enabled = .F.
ELSE
Main.S.pck.Enabled = .T.
Main.S.Indx.Enabled = .T.
ENDIF
IF ISBLANK(ORDER()) .OR. TYPE("BRWSE.PARENT")="O"
Main.S.Srch.Enabled = .F.
ELSE
Main.S.Srch.Enabled = .T.
ENDIF
RETURN
*******************************
FUNCTION ChkOpen
PRIVATE nWA, lRet, nOld
SET TALK OFF
IF .NOT. ISBLANK(ALIAS())
nOld = SELECT(ALIAS())
ELSE
nOld = SELECT()
ENDIF
lRet = .F.
FOR nWA = 1 TO 40
SELECT (nWA)
IF .NOT. ISBLANK(DBF())
lRet = .T.
EXIT
ENDIF
ENDFOR
SELECT (nOld)
RETURN lRet
********************************
*** END BUSINESS.PRG *******************************************************